/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.Lid;
import model.Rit;

//voor hibernate
import org.hibernate.Session;
import org.hibernate.Transaction;
import persistence.SessionManager;

/**
 *
 * @author Johan
 */
public class RitToevoegenController extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // Haal de huidige sessie op
        HttpSession sessie = request.getSession();
        //huidige lid uit de sessie halen
        Lid lid = (Lid) sessie.getAttribute("currentUser");
        
        String vanProvincie = lid.getLidProvincie();
        int lidid = lid.getLidId();

        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        DateFormat tf = new SimpleDateFormat("hh:mm");
        Date datum = null;
        Date tijd = null;
        boolean bagage;
        boolean roken;
        boolean dieren;

        //gegevens uit de request halen (zijn vanuit de jsp pagina in de request gezet)
        try {
            //strings omzetten naar een dateFormat
            datum = df.parse(request.getParameter("datum"));
            tijd = tf.parse(request.getParameter("tijd"));
        } catch (ParseException ex) {
            System.out.println(ex.getMessage());
        }
        String vanplaats = request.getParameter("vanplaats");
        String vanstraat = request.getParameter("vanstraat");
        String naarplaats = request.getParameter("naarplaats");
        String naarstraat = request.getParameter("naarstraat");
        int aantalplaatsen = Integer.parseInt(request.getParameter("aantalplaatsen"));

        //dit zijn checkboxes in de jsp en booleans in de database
        if (request.getParameter("bagage") == null) {
            bagage = false;
        } else {
            bagage = true;
        }
        if (request.getParameter("roken") == null) {
            roken = false;
        } else {
            roken = true;
        }
        if (request.getParameter("dieren") == null) {
            dieren = false;
        } else {
            dieren = true;
        }

        //gegevens opslaan in de database
        Session session = null;
        session = SessionManager.openSession();
        // Start de transactie
        Transaction tx = session.beginTransaction();
       
        //als er geen ritid is meegekomen uit de jsp dan gaat het om een nieuwe rit
        if (request.getParameter("ritid") == "") {
            //create nieuwe rit
            Rit nieuweRit = new Rit(lidid, datum, vanplaats, vanProvincie, naarplaats, "Onbekend", aantalplaatsen, bagage, roken, dieren);
            nieuweRit.setRitTijd(tijd);
            nieuweRit.setRitVanStraat(vanstraat);
            nieuweRit.setRitNaarStraat(naarstraat);
            nieuweRit.setRitDeleted(false);
            nieuweRit.setRitMeerijders(0);
            //save rit 
            session.save(nieuweRit);
        } else {
            // update rit
            Rit updateRit = new Rit(lidid, datum, vanplaats, vanProvincie, naarplaats, "Onbekend", aantalplaatsen, bagage, roken, dieren);
            updateRit.setRitTijd(tijd);
            updateRit.setRitVanStraat(vanstraat);
            updateRit.setRitNaarStraat(naarstraat);
            updateRit.setRitId(Integer.parseInt(request.getParameter("ritid")));
            //save rit 
            session.update(updateRit);
        }

        //commit alles naar de database
        tx.commit();
        

        //doorgaan naar een overzichtcontroller die vervolgens de ritten laat zien 
        response.sendRedirect("MijnRitten");

        //hibernate session sluiten
        session.close();

    }
}
